package seqlist.oj;

/**
 * 获取链表的中间节点
 */
public class Num876 {
    // 1.暴力求解法，先取得链表的长度size，然后size/2对应的索引恰好就是中间节点
//    public ListNode middleNode(ListNode head) {
//        ListNode node = head;
//        int size = 0;
//        while (node != null) {
//            size ++;
//            node = node.next;
//        }
//        // 从index = 0开始，遍历到size / 2终止
//        for (int i = 0; i < size / 2; i++) {
//            head = head.next;
//        }
//        return head;
//    }
    // 2.快慢指针法
    public ListNode middleNode(ListNode head) {
        ListNode low = head,fast = head;
        while (fast != null && fast.next != null) {
            low = low.next;
            fast = fast.next.next;
        }
        return low;
    }
}
